function ajax(url) {
    return new Promise(function(resolve, reject) {
        var xhr = new XMLHttpRequest()
        xhr.open('GET',url)
        xhr.responseType = 'json'
        xhr.onload = function() {
            if(this.status === 200) {
                resolve(this.response)
            }else {
                reject(new Error(this.statusText))
            }
        }
        xhr.send()
    }) 
}
let promise = ajax('api/user.json')
let promise2 = promise.then(function(res) {
    console.log(res)
},function(error) {
    console.log(error)
})
console.log(promise === promise) //false
promise.then(function(value) {
    console.log("1111")
})//-> promise
.then(function(value) {
    console.log("2222")
})//-> promise
.then(function(value) {
    console.log("3333")
})//-> promise
.then(function(value) {
    console.log("4444")
})//-> promise
.then(function(value) {
    console.log("5555")
})

// 每一个then方法都是在为上一个promise添加回调,
// promise的then方法会返回一个全新的promise对象（就可以使用链式调用的方式去调用then方法）
// 后面的then方法就是在为上一个then返回的promise注册回调
// 前面方法中回调函数的返回值 会作为后面then方法回调的参数
// 如果回调中返回的是一个promise对象，那后面的then方法的回调会等待它的结束